//
//  FMDBHelper.h
//  FMDBHelper
//
//  Created by runo on 16/5/25.
//  Copyright © 2016年 com.runo. All rights reserved.
//
/**
    使用方法，只需创建一个要保存model的辅助helper类，继承该类最后实现里面的cqModelClass方法，返回要保存model的class
 */

#import <Foundation/Foundation.h>

/**保存数据库的类型*/
#define SQLType_int @"integer"
#define SQLType_float @"float"
#define SQLType_double @"double"
#define SQLType_text @"text"
#define SQLType_blob @"blob"
/**数据库关键字*/
#define SQLPrimaryKey @"primary key"
#define SQLNot_Null @"NOT NULL"

@interface CQDBHelper : NSObject

/**单例入口*/
+(id)cqShareDMOperation;

/******************子类必须实现的方法*************************/

/**获得model类，子类必须实现并返回“model”的class,
 model中的自定义对象需要实现归档协议*/
+(Class)cqModelClass;

/******************数据库操作的方法*************************/

/**保存所有模型,同样适用于更新,自己注意主键设置*/
-(void)cqSaveAllModel:(NSArray *)arr;
/**获取数据库中所有模型*/
-(NSArray *)cqGetAllModel;
/**获取某一组指定模型*/
-(NSArray *)cqGetModelWhere:(NSDictionary *)dic;//select * from TableName where  key = value
/**删除所有模型*/
-(BOOL)cqDeleteAllModel;
/**删除特定条件下的模型，如果是字符串以外的对象请转成data去比较*/
-(BOOL)cqDeleteModelWhere:(NSDictionary *)dic;//delet from TableName where key1 = value1 and key2 = value2

/******************子类按需选择实现的方法*************************/

/**该属性是否是主键，默认不是*/
+(BOOL)cqIsPrimaryKey:(NSString *)property;
/**该属性是否可以为空，默认是*/
+(BOOL)cqIsAllowNull:(NSString *)property;
/**是否忽略该属性,即不保存到数据库，默认no*/
+(BOOL)cqIsIngorProperty:(NSString *)property;
/**数据库路径，默认在Documents目录下*/
+(NSString *)cqDBPath;



@end
